package com.theaf.basemodule.common.api;

import com.theaf.basemodule.common.condition.ResourceCondition;
import com.theaf.basemodule.common.dto.resource.AppDTO;
import com.theaf.basemodule.common.dto.resource.AuthDTO;
import com.theaf.basemodule.common.dto.resource.ResourceDTO;
import com.theaf.basemodule.common.vo.resource.ResourceVO;

import java.util.List;
import java.util.Map;

/**
 * @Author:songwenke
 * @Description:资源服务接口
 * @Date:create in 17:05 2018/1/3
 * @Modified By:
 **/
public interface ResourceService{
    /**
     * 查询所有系统
     * @return
     */
    List<AppDTO> findAllApp();

    /**
     * 查询资源，以树形展示
     * @param condition
     * @return
     */
    List<ResourceDTO> findList(ResourceCondition condition);

    /**
     * 查询资源信息
     * @param id
     * @return
     */
    ResourceDTO findById(Long id);

    /**
     * 保存资源
     * @param vo
     */
    long save(ResourceVO vo);

    /**
     * 根据系统Id查询模块及功能信息
     * @param appId
     * @return
     */
    List<AuthDTO> findAuths(long appId);

    /**
     * 查询岗位的权限选择情况
     * @param posId
     * @return 各功能ID的选择状态映射
     */
    Map<Long,Boolean> findAuthMapByPos(long posId);

    /**
     * 查询用户的拥有的权限,包括岗位和缺省的，用于选择是否可选（只能选择自己拥有的功能）
     * @param userId
     * @return 功能ID数组
     */
    List<Long> findAuthsByUser(long userId);

    /**
     * 查询用户拥有的权限，包括增的、岗位的和缺省的
     * @param userId
     * @return 各功能ID的选择状态映射
     */
    Map<Long,Boolean> findAuthMapByUser(long userId);

    /**
     * 查询用户除开单独增减的缺省权限,包括岗位选择和缺省选的
     * @param userId
     * @return 功能ID数组
     */
    List<Long> findDefaultAuthsByUser(long userId);

    /**
     * 删除资源
     * @param id
     */
    void delete(Long id);

}
